package com.merry.spring5.lifecycle;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
 * @author ybzou
 * 生命周期的验证：
 *     1.bean对象创建（调用无参构造器）
 *     2.给bean对象设置属性
 *     3.bean的后置处理器（初始化之前）     BeanPostProcessor.postProcessBeforeInitialization()方法
 *     4.bean对象初始化（需在配置bean时指定初始化方法）
 *     5.bean的后置处理器（初始化之后）     BeanPostProcessor.postProcessAfterInitialization()方法
 *     6.bean对象就绪可以使用
 *     7.bean对象销毁（需在配置bean时指定销毁方法）
 *     8.IOC容器关闭
 */
public class VerifyLifeCycle{
    private String name;

    public VerifyLifeCycle() {
        System.out.println("1. invoke Constructor...");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        System.out.println("2. use setter function...");
        this.name = name;
    }

    public void initMethod(){
        System.out.println("4. invoke init...");
    }

    public void destroyMethod(){
        System.out.println("7. invoke destroy to revoke it...");
    }
}
